home *** CD-ROM | disk | FTP | other *** search
/ Small Time Crooks Press Kit / Small Time Crooks Press Kit.iso / pc / Small Time Crooks.dxr / Scripts_8_Bitmap But 1.ls < prev    next >
Encoding:
Text File  |  2000-04-30  |  8.1 KB  |  273 lines

  1. property pNumberTransitionStates, spriteNum, pToggleStyle, pToggleGroupName, pToggleGroupList, pGroupDefault, pToggleOffable, pSelfToggling, pToggleOn_OthersOff, pToggleAllOff_DefaultOn, pNormMember, pCurrentState, pToggleState, pMouseDownWithin, pMouseWithin, pBirthTime
  2.  
  3. on new me, inSpriteNum, inNumTrans, inTogSty, inTogGrup, inTogState, inTogOffbl, inSelfTog, inTogOnOthOff, inTogAllOffDefOn
  4.   set spriteNum to inSpriteNum
  5.   set pNumberTransitionStates to inNumTrans
  6.   if voidp(inTogSty) then
  7.     set pToggleStyle to 0
  8.   else
  9.     set pToggleStyle to inTogSty
  10.   end if
  11.   if voidp(inTogGrup) then
  12.     set pToggleGroupName to EMPTY
  13.   else
  14.     set pToggleGroupName to inTogGrup
  15.   end if
  16.   if voidp(inTogState) then
  17.     set pToggleState to #off
  18.   else
  19.     set pToggleState to inTogState
  20.   end if
  21.   if voidp(inTogOffbl) then
  22.     set pToggleOffable to 1
  23.   else
  24.     set pToggleOffable to inTogOffbl
  25.   end if
  26.   if voidp(inSelfTog) then
  27.     set pSelfToggling to 1
  28.   else
  29.     set pSelfToggling to inSelfTog
  30.   end if
  31.   if voidp(inTogOnOthOff) then
  32.     set pToggleOn_OthersOff to 0
  33.   else
  34.     set pToggleOn_OthersOff to inTogOnOthOff
  35.   end if
  36.   if voidp(inTogAllOffDefOn) then
  37.     set pToggleAllOff_DefaultOn to 0
  38.   else
  39.     set pToggleAllOff_DefaultOn to inTogAllOffDefOn
  40.   end if
  41.   beginSprite(me)
  42.   return me
  43. end
  44.  
  45. on beginSprite me
  46.   set pCurrentState to #norm
  47.   set pNormMember to the memberNum of sprite the spriteNum of me
  48.   if not pToggleStyle then
  49.     set pToggleState to #off
  50.   end if
  51.   if pToggleState = #on then
  52.     set pGroupDefault to 1
  53.     setstate(me, #norm)
  54.   end if
  55.   set pToggleGroupList to [me]
  56.   if not (pToggleGroupName = EMPTY) then
  57.     sendAllSprites(#AppendToListIfToggleGroupNameMatchesInput, pToggleGroupName, pToggleGroupList)
  58.   end if
  59.   set pBirthTime to the ticks
  60. end
  61.  
  62. on mouseEnter me
  63.   if (pToggleState = #on) and pSelfToggling and not pToggleOffable then
  64.     exit
  65.   end if
  66.   if the mouseDown then
  67.     mouseDown(me)
  68.   else
  69.     setstate(me, #roll)
  70.     sendSprite(the spriteNum of me, #MouseEnterAction)
  71.     set pMouseDownWithin to 0
  72.     set pMouseWithin to 1
  73.   end if
  74. end
  75.  
  76. on mouseDown me
  77.   if (pToggleState = #on) and pSelfToggling and not pToggleOffable then
  78.     exit
  79.   end if
  80.   setstate(me, #down)
  81.   sendSprite(the spriteNum of me, #MouseDownAction)
  82.   set pMouseDownWithin to 1
  83.   set pMouseWithin to 0
  84. end
  85.  
  86. on mouseUp me
  87.   if (the lastClick > (the ticks - pBirthTime)) and ((the ticks - pBirthTime) < 60) then
  88.     set pMouseDownWithin to 0
  89.     exit
  90.   end if
  91.   if (pToggleState = #on) and pSelfToggling and not pToggleOffable then
  92.     exit
  93.   end if
  94.   if pToggleStyle then
  95.     if pSelfToggling then
  96.       toggle(me)
  97.     end if
  98.   end if
  99.   if (pToggleState = #on) and not pToggleOffable then
  100.     setstate(me, #norm)
  101.   else
  102.     setstate(me, #roll)
  103.   end if
  104.   sendSprite(the spriteNum of me, #MouseUpAction)
  105.   set pMouseDownWithin to 0
  106.   set pMouseWithin to 1
  107. end
  108.  
  109. on mouseLeave me
  110.   if (pToggleState = #on) and pSelfToggling and not pToggleOffable then
  111.     exit
  112.   end if
  113.   setstate(me, #norm)
  114.   sendSprite(the spriteNum of me, #MouseLeaveAction)
  115.   set pMouseDownWithin to 0
  116.   set pMouseWithin to 0
  117. end
  118.  
  119. on mouseWithin me
  120.   if (pToggleState = #on) and pSelfToggling and not pToggleOffable then
  121.     exit
  122.   end if
  123.   if the mouseUp and pMouseDownWithin then
  124.     mouseUp(me)
  125.   else
  126.     if not pMouseWithin then
  127.       mouseEnter(me)
  128.     end if
  129.   end if
  130. end
  131.  
  132. on setstate me, state
  133.   set pCurrentState to state
  134.   if pToggleState = #off then
  135.     case pCurrentState of
  136.       #norm:
  137.         set the memberNum of sprite the spriteNum of me to pNormMember
  138.       #roll:
  139.         if pNumberTransitionStates = 2 then
  140.           nothing()
  141.         else
  142.           set the memberNum of sprite the spriteNum of me to pNormMember + 1
  143.         end if
  144.       #down:
  145.         if pNumberTransitionStates = 2 then
  146.           set the memberNum of sprite the spriteNum of me to pNormMember + 1
  147.         else
  148.           set the memberNum of sprite the spriteNum of me to pNormMember + 2
  149.         end if
  150.     end case
  151.   else
  152.     case pCurrentState of
  153.       #norm:
  154.         case pNumberTransitionStates of
  155.           2:
  156.             set the memberNum of sprite the spriteNum of me to pNormMember + 1
  157.           3:
  158.             set the memberNum of sprite the spriteNum of me to pNormMember + 2
  159.           4:
  160.             set the memberNum of sprite the spriteNum of me to pNormMember + 2
  161.           5:
  162.             set the memberNum of sprite the spriteNum of me to pNormMember + 2
  163.           6:
  164.             set the memberNum of sprite the spriteNum of me to pNormMember + 3
  165.         end case
  166.       #roll:
  167.         case pNumberTransitionStates of
  168.           2:
  169.             nothing()
  170.           3:
  171.             set the memberNum of sprite the spriteNum of me to pNormMember + 1
  172.           4:
  173.             set the memberNum of sprite the spriteNum of me to pNormMember + 3
  174.           5:
  175.             set the memberNum of sprite the spriteNum of me to pNormMember + 3
  176.           6:
  177.             set the memberNum of sprite the spriteNum of me to pNormMember + 4
  178.         end case
  179.       #down:
  180.         case pNumberTransitionStates of
  181.           2:
  182.             set the memberNum of sprite the spriteNum of me to pNormMember
  183.           3:
  184.             set the memberNum of sprite the spriteNum of me to pNormMember
  185.           4:
  186.             set the memberNum of sprite the spriteNum of me to pNormMember
  187.           5:
  188.             set the memberNum of sprite the spriteNum of me to pNormMember + 4
  189.           6:
  190.             set the memberNum of sprite the spriteNum of me to pNormMember + 5
  191.         end case
  192.     end case
  193.   end if
  194. end
  195.  
  196. on toggle me
  197.   if pToggleState = #on then
  198.     set pToggleState to #off
  199.     if pToggleAllOff_DefaultOn then
  200.       ToggleDefaultOnIfAllOff()
  201.     end if
  202.   else
  203.     set pToggleState to #on
  204.     if pToggleOn_OthersOff then
  205.       repeat with buttonObject in pToggleGroupList
  206.         if the spriteNum of buttonObject = the spriteNum of me then
  207.           next repeat
  208.         end if
  209.         ToggleOff(buttonObject)
  210.       end repeat
  211.     end if
  212.   end if
  213. end
  214.  
  215. on AppendToListIfToggleGroupNameMatchesInput me, groupName, inputList
  216.   if groupName = EMPTY then
  217.     exit
  218.   end if
  219.   if groupName = pToggleGroupName then
  220.     append(inputList, me)
  221.     set pToggleGroupList to inputList
  222.   end if
  223. end
  224.  
  225. on ToggleDefaultOnIfAllOff me
  226.   set foundOn to 0
  227.   repeat with buttonObject in pToggleGroupList
  228.     if the pToggleState of buttonObject then
  229.       set foundOn to 1
  230.       exit repeat
  231.     end if
  232.   end repeat
  233.   if not foundOn then
  234.     repeat with buttonObject in pToggleGroupList
  235.       if the pGroupDefault of buttonObject = 1 then
  236.         set the pToggleState of buttonObject to #on
  237.         setstate(buttonObject, the pCurrentState of buttonObject)
  238.         exit repeat
  239.       end if
  240.     end repeat
  241.   end if
  242. end
  243.  
  244. on ToggleOff me
  245.   set pToggleState to #off
  246.   setstate(me, pCurrentState)
  247. end
  248.  
  249. on getPropertyDescriptionList me
  250.   set description to [:]
  251.   addProp(description, #pNumberTransitionStates, [#default: 4, #format: #symbol, #comment: "Number Of Transition States", #range: [3, 4, 8]])
  252.   addProp(description, #pToggleStyle, [#default: 0, #format: #boolean, #comment: "Toggle Style Button"])
  253.   addProp(description, #pToggleState, [#default: #off, #format: #symbol, #comment: "Initial State  (#on indicates group default)", #range: [#off, #on]])
  254.   addProp(description, #pToggleGroupName, [#default: EMPTY, #format: #text, #comment: "Optional Toggle Group Name"])
  255.   addProp(description, #pToggleOn_OthersOff, [#default: 0, #format: #boolean, #comment: "Toggling On Turns Others In Group Off"])
  256.   addProp(description, #pToggleOffable, [#default: 1, #format: #boolean, #comment: "Can Be Toggled Off"])
  257.   addProp(description, #pToggleAllOff_DefaultOn, [#default: 0, #format: #boolean, #comment: "Toggling Off Turns Group Default On"])
  258.   return description
  259. end
  260.  
  261. on getBehaviorDescription me
  262.   set endChar to offset("--END OF HEADER", the text of me)
  263.   set endLine to the number of lines in char 1 to endChar of the text of me - 1
  264.   set description to line 1 to endLine of the text of me
  265.   repeat with whichLine = endLine down to 1
  266.     if line whichLine of description = EMPTY then
  267.       delete line whichLine of description
  268.     end if
  269.   end repeat
  270.   delete line 1 of description
  271.   return description
  272. end
  273.